import 'dotenv/config';
import { connectDatabase } from "./mongodb/index.js";
import { startServer } from "./api/index.js";
import { ConfigLoader } from "./core/config/index.js";


/**
 * 应用程序启动函数
 */
async function bootstrap() {
    try {
        console.log('🚀 启动 MCP API 服务器...');

        // 加载配置
        const config = ConfigLoader.load();
        console.log('✅ 配置加载成功');

        // 连接数据库 (可选)
        console.log('📡 连接数据库...');
        try {
            await connectDatabase();
            console.log('✅ 数据库连接成功');
        } catch (error) {
            console.warn('⚠️  数据库连接失败，但服务器仍将启动');
            console.warn('数据库相关功能可能不可用：', (error as Error).message);
        }

        // 启动API服务器
        console.log('🌐 启动API服务器...');
        await startServer(config);


        // 启动后台工作者
        console.log('👷 启动后台工作者...');

        console.log('🎉 MCP 系统启动完成!');

    } catch (error) {
        console.error('❌ 启动过程中出错:', error);
        process.exit(1);
    }
}

// 处理未捕获的异常
process.on('uncaughtException', (error) => {
    console.error('未捕获的异常:', error);
    process.exit(1);
});

process.on('unhandledRejection', (reason) => {
    console.error('未处理的Promise拒绝:', reason);
    process.exit(1);
});

// 启动应用程序
bootstrap();
